﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Webcam_Filter
{
    class StormFilter : Filter
    {
        protected override void runfilter(byte[] rgbValues, int hoogte, int breedte, string[] args)
        {
            if (args.Length == 2)
            {
                String soort = args[1];

                int breedteARGB = breedte * 4;
                int oppAfbGedeeldDoor4 = ((hoogte * breedteARGB) / 4) - 1;
                int intensiteit = int.Parse(args[0]) * 1000;

                Random random = new Random();


                for (int i = 0; i < intensiteit; i++)
                {
                    int plaatsPixel = ((random.Next(20,oppAfbGedeeldDoor4)) * 4)-20;
                    if (soort.Equals("sneeuw"))
                    {
                        rgbValues[plaatsPixel] = (byte)random.Next(240, 255); //Blauw
                        rgbValues[plaatsPixel + 1] = (byte)random.Next(240, 255); //Groen
                        rgbValues[plaatsPixel + 2] = (byte)random.Next(240, 255); //Rood        
                        rgbValues[plaatsPixel + 4] = (byte)random.Next(240, 255); //Blauw
                        rgbValues[plaatsPixel + 5] = (byte)random.Next(240, 255); //Groen
                        rgbValues[plaatsPixel + 6] = (byte)random.Next(240, 255); //Rood    
                        rgbValues[plaatsPixel + 8] = (byte)random.Next(240, 255); //Blauw
                        rgbValues[plaatsPixel + 9] = (byte)random.Next(240, 255); //Groen
                        rgbValues[plaatsPixel + 10] = (byte)random.Next(240, 255); //Rood        
                    }
                    else if (soort.Equals("zand"))
                    {
                        rgbValues[plaatsPixel] = (byte)random.Next(0, 20); //Blauw
                        rgbValues[plaatsPixel + 1] = (byte)random.Next(50, 90); //Groen
                        rgbValues[plaatsPixel + 2] = (byte)random.Next(150, 200); //Rood
                        rgbValues[plaatsPixel + 4] = (byte)random.Next(0, 20); //Blauw
                        rgbValues[plaatsPixel + 5] = (byte)random.Next(50, 90); //Groen
                        rgbValues[plaatsPixel + 6] = (byte)random.Next(150, 200); //Rood   
                        rgbValues[plaatsPixel + 8] = (byte)random.Next(0, 20); //Blauw
                        rgbValues[plaatsPixel + 9] = (byte)random.Next(50, 90); //Groen
                        rgbValues[plaatsPixel + 10] = (byte)random.Next(150, 200); //Rood   
                    }
                    else if (soort.Equals("regen"))
                    {
                        rgbValues[plaatsPixel + 3] = (byte)random.Next(255); //Blauw
                        rgbValues[plaatsPixel + 6] = (byte)random.Next(255); //Groen
                        rgbValues[plaatsPixel + 9] = (byte)random.Next(255); //Rood
                        //rgbValues[plaatsPixel + 4] = (byte)random.Next(0, 20); //Blauw
                        //rgbValues[plaatsPixel + 5] = (byte)random.Next(50, 90); //Groen
                        //rgbValues[plaatsPixel + 6] = (byte)random.Next(150, 200); //Rood   
                        //rgbValues[plaatsPixel + 8] = (byte)random.Next(0, 20); //Blauw
                        //rgbValues[plaatsPixel + 9] = (byte)random.Next(50, 90); //Groen
                        //rgbValues[plaatsPixel + 10] = (byte)random.Next(150, 200); //Rood   
                    }
                }

            }
        }
    }
}